package smartlifev30.com.sdk.api.service_app;

import android.support.annotation.NonNull;

import smartlifev30.com.sdk.api.CallBack;
import smartlifev30.com.sdk.bean.response.LoginResponse;


/**
 * 用户管理模块
 *
 * @author tys
 * @date 2018/8/12
 */

public interface IUserMgmt {

    /**
     * 登陆服务器(密码)
     *
     * @param userName
     * @param pwd
     * @param channelID 具体取值参见接口文档或询问客服人员
     * @param appId     具体取值参见接口文档或询问客服人员
     * @param callback
     */
    void loginByPwd(@NonNull String userName, @NonNull String pwd, @NonNull String channelID, @NonNull String appId, @NonNull CallBack<LoginResponse> callback);

    /**
     * 登陆服务器(token)
     *
     * @param userName
     * @param token
     * @param callback
     */
    void loginByToken(@NonNull String userName, @NonNull String token, @NonNull CallBack<LoginResponse> callback);

    /**
     * 登出
     *
     * @param userName
     * @param token
     * @param callback
     */
    void logOut(@NonNull String userName, @NonNull String token, @NonNull CallBack<LoginResponse> callback);


    /**
     * 修改密碼
     *
     * @param userName
     * @param token
     * @param oldPwd
     * @param newPwd
     * @param callback
     */
    void changePwd(@NonNull String userName, @NonNull String token, @NonNull String oldPwd, @NonNull String newPwd, @NonNull CallBack<LoginResponse> callback);


    /**
     * 查询一个用户是否注册
     *
     * @param userName
     * @param token
     * @param user
     * @param callback
     */
    void regCheck(@NonNull String userName, @NonNull String token, @NonNull String user, @NonNull CallBack<LoginResponse> callback);

    /**
     * 获取短信验证码
     *
     * @param userName
     * @param type     1:注册验证  4:忘记密码变更验证 
     * @param callback
     */
    void smsCode(@NonNull String userName, @NonNull Integer type, @NonNull CallBack<LoginResponse> callback);


    /**
     * 重置密码
     *
     * @param userName
     * @param code
     * @param newPwd
     * @param callback
     */
    void resetPwd(@NonNull String userName, @NonNull String code, @NonNull String newPwd, @NonNull CallBack<LoginResponse> callback);


}
